#define _CRT_SECURE_NO_WARNINGS 1


#include <stdio.h>
#include <stdlib.h>
struct stu
{
	char name[20];
	int age;
};
int cmp_stu_by_age(const void* e1,const void* e2)
{
	//通过结构体去访问一个元素,升序
	return ((struct stu*)e1)->age - ((struct stu*)e2)->age;
}
//使用qsort排序结构体

void test2()
{
	//对结构体初始化
	struct stu s[] = { {"张三",20},{"李四",45},{"王二",16}};
	int length = sizeof(s) / sizeof(s[0]);
	qsort(s,length,sizeof(s[0]),cmp_stu_by_age);
}
//使用qsort排序整型数组
//void test1()
//{
//	int arr[] = { 9,8,7,6,5,4,3,2,1 };
//	int i = 0;
//	int length = sizeof(arr) / sizeof(arr[0]);
//	//void qsort(void* base, size_t num, size_t width, int(__cdecl * compare)(const void* elem1, const void* elem2));
//	qsort(arr, length, sizeof(arr[0]), cmp_int);
//	//cmp_int 函数的返回值大于0时，也就是第一个元素大于第二个元素时，交换位置
//	//执行qsort函数中的交换位置,使得第一个元素小于第二个元素
//
//	//如果想降序排列，第二个元素大于第一个元素的时候执行，也就是e2-e1大于0时执行，颠倒e2和e1的位置即可
//
//	for (i = 0; i < 9; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//}
//int cmp_int(const void* e1, const void* e2)
//{
//	return *((int*)e1) - *((int*)e2);
//}
int main()
{
	//test1();
	test2();
	return 0;
}